case 选择

        在 shell 脚本中,除了用 if 来判断逻辑外,还有一种常用的方式,那就是 case 了。

        具体格式:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
case 变量 in
value1)
command
;;
value2)
command
;;
value3)
command
;;
*)
Command
;;
Esac

        上面的结构中,不限制 value 的个数,* 代表了除了上面的 value 外的其他值。

        下面来写一个判断输入数值是奇数或者偶数的脚本:

1
[root@192 sbin]# vim case.sh

        加入内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/bin/bash
read -p "Input a number:" n
a=$[$n%2]
case $a in
1)
echo "The number is odd."
;;
0)
echo "The number is even."
;;
*)
echo "It's not a number."
;;
esac

        $a 的值为 1 或为 0 ,执行结果为

1
[root@192 sbin]# sh case.sh

        case 脚本常用于编写系统服务的启动脚本。例如 /etc/init.d/iptables 中就用到了。另外有一个知识点,在给出的判断选项,即本例中的 0) 和 1) ,支持写成 1|0) ,意思是当变量 a 的值为 0 或 1 时,只不过在本例中这样的逻辑是不成立的,只是 case 判断脚本支持这样的写法。